/*
 * Copyright (c) 2022-2022 All rights Reserved.
 */

package com.driving.core.service;

import java.util.Map;

import com.driving.core.base.IBaseService;
import com.driving.core.entity.Exercise;

/**
 * 习题服务
 *
 * @author SAGITTAR
 * @since 2017
 */
public interface IExerciseService extends IBaseService<Exercise> {

    /**
     * 查询指定科目的试题章节
     *
     * @param subjectId subjectId
     * @param type type
     * @return 查询指定科目的试题章节
     */
    Map<String, Object> selectDistinctChapterBySubjectId(int subjectId, String type);

    /**
     * 查询题目
     *
     * @param subjectId 科目一，二，三，四
     * @param type 车型
     * @param chapter 章节
     * @param category 类别
     * @param studentId 学号
     * @param id 当前题号
     * @return 查询题目
     */
    Map<String, Object> selectRandomOrNextOne(int subjectId, String type, int chapter, int category, int studentId,
            int id);

    /**
     * 查询错误题集或收藏题集
     *
     * @param studentId studentId
     * @param subjectId subjectId
     * @param from from
     * @param id id
     * @return 查询错误题集或收藏题集
     */
    Map<String, Object> selectIncorrectOrCollectedOne(int studentId, int subjectId, int from, int id);

    /**
     * 查询模拟试题信息
     *
     * @param subjectId subjectId
     * @param type type
     * @return 查询模拟试题信息
     */
    Map<String, Object> selectSimulationBySubjectIdAndType(int subjectId, String type);

    /**
     * 查询模拟试题
     *
     * @param examId 试卷编号
     * @param id 试题编号
     * @return 查询模拟试题
     */
    Map<String, Object> selectSimulationOneByExamIdAndId(int examId, int id);

    /**
     * 查询图片试题信息
     *
     * @param subjectId subjectId
     * @param type type
     * @return 查询图片试题信息
     */
    Map<String, Object> selectListByPictureType(int subjectId, String type);

    /**
     * 查询该类型的所有看图题
     *
     * @param pictureType pictureType
     * @return 查询该类型的所有看图题
     */
    Map<String, Object> selectAllByPictureType(int pictureType);

    /**
     * 直接按照题号选题
     *
     * @param studentId studentId
     * @param id id
     * @return 直接按照题号选题
     */
    Map<String, Object> selectOneById(int studentId, int id);

    /**
     * 错题，收藏
     *
     * @param studentId studentId
     * @param exerciseId exerciseId
     * @param from from
     * @return 错题，收藏
     */
    int collect(int studentId, int exerciseId, int from);

    /**
     * 取消收藏
     *
     * @param studentId 收藏编号
     * @param id id
     * @return 取消收藏
     */
    boolean cancelCollect(int studentId, int id);
}
